cbuffer MatrixBuffer
{
	matrix worldMatrix;
	matrix worldInverseTransposeMatrix;
	matrix viewMatrix;
	matrix projectionMatrix;
};
struct VertexInputType
{
	float3 position:POSITION;
	float3 normalLocal:NORMAL;
	float2 uvCoordinate : TEXCOORD;
};
struct PixelInputType
{
	float4 positionHomogeneous:SV_POSITION;
	float3 positionWorld : POSITION;
	float3 normalWorld:NORMAL;
};
PixelInputType main(VertexInputType input)
{
	PixelInputType output;

	output.positionHomogeneous = mul(worldMatrix, float4(input.position,1.0f));
	output.positionWorld = output.positionHomogeneous.xyz;
	output.positionHomogeneous = mul(viewMatrix ,output.positionHomogeneous);
	output.positionHomogeneous = mul(projectionMatrix ,output.positionHomogeneous);

	output.normalWorld = mul(input.normalLocal.xyz, (float3x3) worldInverseTransposeMatrix);

	return output;
}